Skip to content

Conversation

@Mingguriguri
Copy link
Collaborator

๐ŸŒฑWIL

์ด๋ฒˆ ํ•œ ์ฃผ์˜ ์†Œ๊ฐ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”!

  • ์ด๋ฒˆ ํ•œ ์ฃผ๋Š” ์ƒˆ๋กœ ์‹œ์ž‘ํ•œ ๋ถ€ํŠธ์บ ํ”„์— ์ ์‘ํ•˜๋А๋ผ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ’€์ง€๋Š” ๋ชปํ–ˆ๋‹ค...
  • ๋ฐœ์ œ์™€ ๊ณผ์ œ ๋ฌธ์ œ๋กœ BFS+๊ตฌํ˜„ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๊ณ , ๋‹ค๋ฅธ ๋ฌธ์ œ๋กœ๋Š” java๋กœ ํž™ ์œ ํ˜• ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•ด๋ณด์•˜๋‹ค. BFS ๊ตฌํ˜„ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ, ํฐ ํ‹€์€ ๋‹ค ๋™์ผํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๋‹ค๋งŒ ๋ฐฉํ–ฅ์ด๋ผ๊ฑฐ๋‚˜, ๋งต์ด ์ด๋™ํ•œ๋‹ค๊ฑฐ๋‚˜ ์ถ”๊ฐ€์ ์ธ ์กฐ๊ฑด์„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ์–ด๋ ค์šด ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค. #16509 ์žฅ๊ตฐ ๋ฌธ์ œ๋„ ๋ฐฉํ–ฅ์ด 8๊ฐ€์ง€๋‚˜ ๋˜์–ด ์ด๋™ํ•˜๋Š” ๊ฑธ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ถ€๋ถ„์ด์—ˆ๋‹ค. #11559. Puyo Puyo ๋Š” ์ค‘๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ง‰๋ง‰ํ–ˆ๋‹ค. Puyo๊ฐ€ ํ„ฐ์ง€๊ฒŒ ๋˜๋ฉด ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค์˜ค๋„๋กœ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ตํ™˜ํ•˜๋ฉฐ ํ’€์ดํ•˜๋Š” ๋ถ€๋ถ„์ด ์ธ์ƒ์ ์ด์—ˆ๋‹ค. ๋‚˜์˜ ๊ฒฝ์šฐ, ์ด ๋ถ€๋ถ„์—์„œ ๋ง‰ํ˜€์„œ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ •๋‹ต์„ ๋ณด๊ณ  ํ’€์ด๋ฅผ ์ด์–ด๊ฐ€๊ฒŒ ๋˜์—ˆ๋‹ค.
  • Java๋กœ ํ’€์ดํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  kit - ๋” ๋งต๊ฒŒ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ, Java์—์„œ Heap์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” PriorityQueue๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

๐Ÿš€์ฃผ๊ฐ„ ๋ชฉํ‘œ ๋ฌธ์ œ ์ˆ˜: 3๊ฐœ

ํ‘ผ ๋ฌธ์ œ


๋ฐฑ์ค€ #16509. ์žฅ๊ตฐ: ๊ทธ๋ž˜ํ”„ / ๊ณจ๋“œ5

์ •๋ฆฌํ•œ ๋งํฌ: (๋ฐ”๋กœ๊ฐ€๊ธฐ)

๐Ÿšฉํ”Œ๋กœ์šฐ (์„ ํƒ)

์ฝ”๋“œ๋ฅผ ํ’€์ดํ•  ๋•Œ ์ ์—ˆ๋˜ ํ”Œ๋กœ์šฐ๊ฐ€ ์žˆ๋‚˜์š”?

  1. ์ž…๋ ฅ์œผ๋กœ ์ƒ์˜ ์œ„์น˜์™€ ์™•์˜ ์œ„์น˜๋ฅผ ๋ฐ›๋Š”๋‹ค.
  2. ์žฅ๊ธฐํŒ์˜ ๋ฒ”์œ„๋Š” 10x9์ด๋ฉฐ, ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.
  3. ์ƒ์˜ ์ด๋™ ๋ฐฉํ–ฅ์„ 8๊ฐ€์ง€๋กœ ์ •์˜ํ•œ๋‹ค. (3๋‹จ๊ณ„ ์ด๋™ ๊ฒฝ๋กœ๋กœ ํ‘œํ˜„)
  4. BFS ํ์— ์ƒ์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ๋„ฃ๊ณ  ํƒ์ƒ‰์„ ์‹œ์ž‘ํ•œ๋‹ค.
  5. ํ˜„์žฌ ์œ„์น˜์—์„œ 8๋ฐฉํ–ฅ ์ด๋™์„ ์‹œ๋„ํ•˜๋ฉฐ, ์ด๋™ ๊ฒฝ๋กœ์˜ ์ค‘๊ฐ„ ๋‘ ์นธ์— ์™•์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  6. ์™•์ด ์ค‘๊ฐ„ ๊ฒฝ๋กœ์— ์—†๋‹ค๋ฉด ๋‹ค์Œ ์นธ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ํ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  7. ์ƒ์ด ์™•์ด ์žˆ๋Š” ์œ„์น˜์— ๋„๋‹ฌํ•˜๋ฉด ํ•ด๋‹น๊นŒ์ง€์˜ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  8. BFS ์ข…๋ฃŒ ์‹œ๊นŒ์ง€ ์™•์—๊ฒŒ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿšฉ์ œ์ถœํ•œ ์ฝ”๋“œ

import sys
from collections import deque
input = sys.stdin.readline

# 1. ์ƒ๊ณผ ์™• ์ดˆ๊ธฐ ์œ„์น˜
s_r, s_c = map(int, input().split())  # ์ƒ์˜ ์œ„์น˜
k_r, k_c = map(int, input().split())  # ์™•์˜ ์œ„์น˜

# ์žฅ๊ธฐํŒ (10x9)
grid = [[0 for _ in range(9)] for _ in range(10)]
visited = [[False for _ in range(9)] for _ in range(10)]

# 8๊ฐ€์ง€ ์ด๋™ ๊ฒฝ๋กœ
directions = [
    # ์ƒ
    ((-1, 0), (-1, 1), (-1, 1)),    # ์˜ค๋ฅธ์ชฝ ์œ„
    ((-1, 0), (-1, -1), (-1, -1)),  # ์™ผ์ชฝ ์œ„
    # ํ•˜
    ((1, 0), (1, 1), (1, 1)),       # ์˜ค๋ฅธ์ชฝ ์•„๋ž˜
    ((1, 0), (1, -1), (1, -1)),     # ์™ผ์ชฝ ์•„๋ž˜
    # ์ขŒ
    ((0, -1), (-1, -1), (-1, -1)),  # ์™ผ์ชฝ ์œ„
    ((0, -1), (1, -1), (1, -1)),    # ์™ผ์ชฝ ์•„๋ž˜
    # ์šฐ
    ((0, 1), (-1, 1), (-1, 1)),     # ์˜ค๋ฅธ์ชฝ ์œ„
    ((0, 1), (1, 1), (1, 1))        # ์˜ค๋ฅธ์ชฝ ์•„๋ž˜
]


def bfs():
    queue = deque([(s_r, s_c)])  # ์ƒ ์œ„์น˜๋ถ€ํ„ฐ ์‹œ์ž‘
		
    while queue:
        r, c = queue.popleft()

        # ์™•์—๊ฒŒ ๋„๋‹ฌํ•œ ๊ฒฝ์šฐ
        if (r, c) == (k_r, k_c):
            return grid[r][c]

        for d1, d2, d3 in directions:
            nr1, nc1 = r + d1[0], c + d1[1]
            nr2, nc2 = nr1 + d2[0], nc1 + d2[1]
            nr3, nc3 = nr2 + d3[0], nc2 + d3[1]
            
            if (0 <= nr3 < 10 and 0 <= nc3 < 9) and not visited[nr3][nc3]:
                if (nr1, nc1) == (k_r, k_c) or (nr2, nc2) == (k_r, k_c):
                    # ๊ฒฝ๋กœ์— ์™•์ด ์žˆ๋‹ค๋ฉด ๋ชป ๊ฐ
                    continue
                    
                visited[nr3][nc3] = True
                grid[nr3][nc3] += grid[r][c] + 1
                queue.append((nr3, nc3))

    return -1 # ๋„๋‹ฌ ๋ถˆ๊ฐ€


print(bfs())

๐Ÿ’กTIL

๋ฐฐ์šด ์ ์ด ์žˆ๋‹ค๋ฉด ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”

  • ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ํ—ท๊ฐˆ๋ ธ๋‹ค.
  • ์ด์ „์— ํ’€์—ˆ๋˜ ํ† ๋งˆํ†  ๋ฌธ์ œ๋‚˜ ๋‚˜์ดํŠธ ์ด๋™ ๋ฌธ์ œ๋ฅผ BFS๋กœ ํ’€์–ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ์–ด ๋น„๊ต์  ์ˆ˜์›”ํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋ฐฑ์ค€ #11559. Puyo Puyo: ๊ทธ๋ž˜ํ”„ / ๊ณจ๋“œ4

์ •๋ฆฌํ•œ ๋งํฌ: (๋ฐ”๋กœ๊ฐ€๊ธฐ)

๐Ÿšฉํ”Œ๋กœ์šฐ (์„ ํƒ)

์ฝ”๋“œ๋ฅผ ํ’€์ดํ•  ๋•Œ ์ ์—ˆ๋˜ ํ”Œ๋กœ์šฐ๊ฐ€ ์žˆ๋‚˜์š”?
์ „์ฒด ๋กœ์ง์€ while True ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ํ•œ ํ„ด์—์„œ ์•„๋ž˜ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค:

  • visited ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • ์ „์ฒด ํ•„๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ, ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋ฟŒ์š”๋ฅผ ๊ธฐ์ค€์œผ๋กœ BFS ํƒ์ƒ‰์„ ํ•œ๋‹ค.
  • ๊ฐ™์€ ์ƒ‰์˜ ๋ฟŒ์š”๊ฐ€ 4๊ฐœ ์ด์ƒ์ธ ๊ทธ๋ฃน์€ ์‚ญ์ œํ•˜๊ณ  pang = True๋กœ ์„ค์ •ํ•œ๋‹ค.
  • pang์ด ์ฐธ์ด๋ฉด ๋ธ”๋ก์„ ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๊ณ  combo += 1
  • ๋” ์ด์ƒ ํ„ฐ์งˆ ๋ฟŒ์š”๊ฐ€ ์—†์œผ๋ฉด ์ข…๋ฃŒํ•œ๋‹ค.

๐Ÿšฉ์ œ์ถœํ•œ ์ฝ”๋“œ

import sys
from collections import deque
input = sys.stdin.readline

FIELD_X = 12
FIELD_Y = 6

# 1. ์ž…๋ ฅ
field = [list(input().strip()) for _ in range(FIELD_X)]

directions = [(0, 1), (1, 0), (0, -1), (-1, 0)]
combo = 0

# ์ƒํ•˜์ขŒ์šฐ๋กœ ๋™์ผํ•œ ๋ธ”๋ก์„ ํƒ์ƒ‰ํ•ด ํ•ด๋‹น ์ขŒํ‘œ๋“ค์„ ๊ฐ€์ง„ ๋ฆฌ์ŠคํŠธ ๋ฐ˜ํ™˜
def bfs(x, y):
    queue = deque([(x, y)])
    color = field[x][y]
    visited[x][y] = True
    same_blocks = [(x, y)] # ๊ฐ™์€ ๋ธ”๋ก์˜ ์ขŒํ‘œ ๋ฆฌ์ŠคํŠธ

    while queue:
        x, y = queue.popleft()
        for dx, dy in directions:
            nx, ny = x + dx, y + dy
            if (0 <= nx < FIELD_X and 0 <= ny < FIELD_Y) and \
                field[nx][ny] == color and not visited[nx][ny]:
                queue.append((nx, ny))
                visited[nx][ny] = True
                same_blocks.append((nx, ny))

    return same_blocks


# ๋™์ผํ•œ ๋ธ”๋ก ์ œ๊ฑฐ
def delete(same_blocks):
    for x, y in same_blocks:
        field[x][y] = '.'


# ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ฉด์„œ ์œ„์—์„œ ์•„๋ž˜๋กœ ๋ธ”๋ก ๋‚ด๋ฆฌ๊ธฐ
def down():
    for y in range(FIELD_Y):
        for x in range(10, -1, -1):
            for k in range(FIELD_X - 1, x, -1):
                if field[x][y] != '.' and field[k][y] == '.':
                    field[k][y] = field[x][y]
                    field[x][y] = '.'


while True:
    pang = False
    visited = [[False for _ in range(FIELD_Y)] for _ in range(FIELD_X)]

    for i in range(FIELD_X):
        for j in range(FIELD_Y):
            if field[i][j] != '.' and not visited[i][j]:
                same_blocks = bfs(i, j)

                # ๋™์ผํ•œ ๋ธ”๋ก์ด 4๊ฐœ ์ด์ƒ์ผ ๊ฒฝ์šฐ ํ„ฐํŠธ๋ฆฌ๊ธฐ
                if len(same_blocks) >= 4:
                    pang = True
                    delete(same_blocks)


    # ํ„ฐ๋œจ๋ฆฐ ๋ธ”๋ก์ด ์žˆ์œผ๋ฉด ๋ฐ‘์œผ๋กœ ๋‚ด๋ฆฌ๊ธฐ
    if pang:
        down()
        combo += 1
    else:
        # ๋”์ด์ƒ ํ„ฐ๋œจ๋ฆด ๊ฒŒ ์—†๋‹ค๋ฉด ์ข…๋ฃŒ
        break

print(combo)

๐Ÿ’กTIL

๋ฐฐ์šด ์ ์ด ์žˆ๋‹ค๋ฉด ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”

  • ์ฒ˜์Œ์—๋Š” ์ค‘๋ ฅ ์ฒ˜๋ฆฌ ๋ถ€๋ถ„์ด ๋ง‰๋ง‰ํ–ˆ๋‹ค. ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋Š” ๋กœ์ง์„ ๋– ์˜ฌ๋ฆฌ๊ธฐ ์–ด๋ ค์›Œ ๋‹ค๋ฅธ ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.
  • down() ํ•จ์ˆ˜์—์„œ ์œ„์—์„œ ์•„๋ž˜๋กœ ๋‚ด๋ ค์˜ค๋„๋ก ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ตํ™˜ํ•˜๋Š” ๋ฐฉ์‹์ด ์ธ์ƒ ๊นŠ์—ˆ๋‹ค.
  • BFS ํƒ์ƒ‰์€ ์ต์ˆ™ํ–ˆ์ง€๋งŒ, ํƒ์ƒ‰ + ์‚ญ์ œ + ์ค‘๋ ฅ ์ ์šฉ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฌธ์ œ๋Š” ์ƒ๊ฐ๋ณด๋‹ค ๊นŒ๋‹ค๋กœ์› ๋‹ค.
  • ๋ฟŒ์š”๋ฟŒ์š”์™€ ๊ฐ™์ด ์‹ค์ œ ๊ฒŒ์ž„ ๋กœ์ง์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฌธ์ œ๋Š” ๊ตฌํ˜„๋ ฅ์ด ๊ต‰์žฅํžˆ ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ๋А๊ผˆ๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค #42626. ๋”๋งต๊ฒŒ: ํž™ / Level2

์ •๋ฆฌํ•œ ๋งํฌ: (๋ฐ”๋กœ๊ฐ€๊ธฐ)

๐Ÿšฉํ”Œ๋กœ์šฐ (์„ ํƒ)

์ฝ”๋“œ๋ฅผ ํ’€์ดํ•  ๋•Œ ์ ์—ˆ๋˜ ํ”Œ๋กœ์šฐ๊ฐ€ ์žˆ๋‚˜์š”?

  • ๋ฐฐ์—ด์„ PriorityQueue์— ๋‹ด๋Š”๋‹ค.
  • while๋ฌธ์„ ํ†ตํ•ด:
    • ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ K ์ด์ƒ์ด๋ฉด ๋ฐ”๋กœ ์ •๋‹ต ๋ฐ˜ํ™˜.
    • ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์ตœ์†Œ ๋‘ ๊ฐœ๋ฅผ ๊บผ๋‚ด์„œ ์ƒˆ ์Œ์‹ ์ƒ์„ฑ โ†’ ํ์— ๋‹ค์‹œ ์‚ฝ์ž….
  • ํ์— ํ•˜๋‚˜๋งŒ ๋‚จ๊ณ  ๊ทธ๊ฒƒ๋„ K ๋ฏธ๋งŒ์ด๋ฉด 1 ๋ฐ˜ํ™˜.

๐Ÿšฉ์ œ์ถœํ•œ ์ฝ”๋“œ

import java.util.Arrays;
import java.util.PriorityQueue;

class Solution {
    public int solution(int[] scoville, int K) {
        int answer = 0;
        Arrays.sort(scoville);
        PriorityQueue<Integer> minHeap = new PriorityQueue<>();

        // scoville ๋ฐฐ์—ด์„ minHeap์œผ๋กœ ์˜ฎ๊ธฐ๊ธฐ
        for (int s: scoville) {
            minHeap.offer(s);
        }
        
        // minHeap์˜ ํฌ๊ธฐ๊ฐ€ 1๋ณด๋‹ค ์ž‘์•„์งˆ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต
        while (minHeap.size() > 1) {
		        // ์ด๋ฏธ K๋ณด๋‹ค ํฌ๋‹ค๋ฉด ๋ฐ”๋กœ return
            if (minHeap.peek() >= K) {
                return answer;
            }
            int a = minHeap.poll();
            int b = minHeap.poll();
            minHeap.offer(a + b * 2);
            answer++;
        }
        
        // ๋งˆ์ง€๋ง‰ ํ•˜๋‚˜๋„ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.
        if (minHeap.peek() >= K) {
            return answer;
        }
       
        return -1;
    }
}

๐Ÿ’กTIL

๋ฐฐ์šด ์ ์ด ์žˆ๋‹ค๋ฉด ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”

  • ํŒŒ์ด์ฌ์—์„œ๋Š” deque๋ฅผ ์ด์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋˜ ๋ถ€๋ถ„์„ Java๋กœ ์ ‘๊ทผํ•˜๋‹ˆ ์–ด๋–ค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์จ์•ผ ํ•  ์ง€ ๊ฐ์ด ์˜ค์ง€ ์•Š์•˜๋‹ค.
  • Java Heap์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋‹ˆ โ€œPriorityQueueโ€ ์ปฌ๋ ‰์…˜์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ’€์ดํ•˜๋‹ˆ ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • PriorityQueue ์ž๋ฃŒํ˜•์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์š”์†Œ๋Š” offer, peek, poll์ด ์žˆ๋‹ค.
  • ์ด ๋ฌธ์ œ๋Š” ํšจ์œจ์„ฑ์„ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” PriorityQueue๋ฅผ ์จ์•ผ๋งŒ ํ•˜๋Š” ์œ ํ˜•์ด์—ˆ๋‹ค.

@Mingguriguri Mingguriguri merged commit 2efc771 into main Jun 7, 2025
@github-actions
Copy link

github-actions bot commented Jun 7, 2025

๐Ÿ”ฅ2025-06 ์ฑŒ๋ฆฐ์ง€ ์ง„ํ–‰ ์ƒํ™ฉ

๐Ÿ‘‰ ๊ทธ๋ž˜ํ”„

  • Mingguriguri: 2๊ฐœ โŒ

๐Ÿ‘‰ ๊ตฌํ˜„

  • Mingguriguri: 0๊ฐœ โŒ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants